'''
正则表达式：
（regular expression）
是一个描述字符串模式的对象
正则表达式主要用来验证用户的数据、以及对
文本内容的信息过滤，获取满足条件的内容
这样的做的好处是提高匹配效率、减少遍历时间
正则表达式有自己的语法 字符和操作符组成
'''
import re

match = re.search(r'([0-9]*)([a-zA-Z]*)([0-9]*)', '123abc456')
print(match)
print(type(match))
if match:
    print(match.group(0))
    print(match.group(1))
    print(match.group(2))
    print(match.group(3))
    print(match[0])
    print(match[1])

'''
group()用来提取分组截获的字符串  （数字）用来表示分组
r'([0-9]*)([a-zA-Z]*)([0-9]*)'正则表达式
中3组()把匹配结果分成3组
group() == group(0) 匹配正表示的整体结果
group(1) 表示匹配第一个 （） 的匹配部分
同理有几个 () 就有几个 group()分组
注意：如果正则表达式中没有() 意思明确是没有分组 so group(1) 就会出现错误

'''

'''邮编 第一位非0 一共6位数字'''
match = re.match(r'^[1-9]\d{4}$', '450000')
if match:
    print('YES')
else:
    print('NO')

'''纯数字组成 （11）'''
match = re.match(r'^1\d{10}$', '12345678901')
if match:
    print('YES')
else:
    print('NO')

'''去空格'''
after_string = re.sub(r'(\n|\n | )', '', '11\n       2\n2 33 44\n\n')
print(after_string)

match = re.match(r'^abc$', 'abc')
if match:
    print('YES')
else:
    print('NO')

match = re.match(r'([0-9]|[1-9]\d)$', '9')
if match:
    print('YES')
else:
    print('NO')

match = re.match(r'^1\d{2}$', '100')
if match:
    print('YES')
else:
    print('NO')

'''匹配货币规则
1,000.00 10,000.00  1,000,000.00 1,000,000,000.00
'''
match = re.match(r'^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]{1,2})?$', '10,000.00')
if match:
    print('YES')
else:
    print('NO')

'''通过  .compile() 方法来创建一个 reg 的正则对象
用来对内容的一个匹配
'''
src = 'abcd1bcd1111aacd1abce1abcf1111d'
patt = re.compile(r'a*c+\w')
res = patt.findall(src)
print(res)
res = re.findall(r'a*c+\w', src)
print(res)
res = re.split(r'a*c+\w', src)
print(res)
